<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>EasyRTC Documentation</title>
  <script src="scripts/prettify/prettify.js"> </script>
  <script src="scripts/prettify/lang-css.js"> </script>
  <!--[if lt IE 9]>
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
  <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
  <link href="../assets/easyrtc-docs-jsdoc-styles-1.css" media="all" rel="stylesheet" />
</head>
<body>
<header class="template">
	<div class="wrapper-content">
    <a href="../index.html"><img src="../assets/easyrtc-logo.png" alt="EasyRTC Documentation"></a>
		<h1 title="EasyRTC Documentation">Documentation</h1>
	</div>
</header>
<div class="wrapper-docs">
<nav>
	<h2><a href="../index.html">Docs Home</a></h2>
	<h3>EasyRTC Guides</h3>
	<ul>
		<li><a href="../easyrtc_faq.html">FAQ</a></li>
		<li><a href="../easyrtc_gettingStarted.html">Getting Started</a></li>
		<li><a href="../easyrtc_server_install.html">EasyRTC Server: Installation</a></li>
		<li><a href="../easyrtc_client_tutorial.html">EasyRTC Framework Tutorial</a></li>
		<li><a href="../easyrtc_rooms.html">Rooms</a></li>
		<li><a href="../easyrtc_server_configuration.html">EasyRTC Server: Configuration</a></li>
		<li><a href="../easyrtc_server_events.html">EasyRTC Server: Events</a></li>
		<li><a href="../easyrtc_server_ice.html">EasyRTC Server: ICE Configuration</a></li>
		<li><a href="../easyrtc_with_other_servers.html">Using Alongside Other Servers</a></li>
		<li><a href="../easyrtc_server_ssl.html">EasyRTC Server: Using SSL</a></li>
		<li><a href="../easyrtc_webrtc_problems.html">WebRTC Problems and Possible Fixes</a></li>
		<li><a href="../easyrtc_upcoming_features.html">Upcoming Features</a></li>
		<li><a href="../easyrtc_changelog.html">Change Log</a></li>
	</ul>
	<h3>EasyRTC Client Classes</h3>
	<ul>
		<li><a href="../client-api/Easyrtc.html">Easyrtc</a></li>
		<li><a href="../client-api/Easyrtc_App.html">Easyrtc_App</a></li>
		<li><a href="../client-api/Easyrtc_ft.html">Easyrtc_ft</a></li>
		<li><a href="../client-api/Easyrtc_IframeCapture.html">Easyrtc_IframeCapture</a></li>
		<li><a href="../client-api/Easyrtc_No_IframeCapture.html">Easyrtc_No_IframeCapture</a></li>
		<li><a href="../client-api/Easyrtc_Rates.html">Easyrtc_Rates</a></li>
		<li><a href="../client-api/Easyrtc_Recorder.html">Easyrtc_Recorder</a></li>
	</ul>
	<h3>EasyRTC Server Modules</h3>
	<ul>
		<li><a href="../server-api/module-easyrtc_default_event_listeners.html">easyrtc_default_event_listeners</a></li>
		<li><a href="../server-api/module-easyrtc_default_options.html">easyrtc_default_options</a></li>
		<li><a href="../server-api/module-easyrtc_private_obj.html">easyrtc_private_obj</a></li>
		<li><a href="../server-api/module-easyrtc_public_obj.html">easyrtc_public_obj</a></li>
		<li><a href="../server-api/module-easyrtc_util.html">easyrtc_util</a></li>
		<li><a href="../server-api/module-general_util.html">general_util</a></li>
	</ul>
	<h3>EasyRTC Server Classes</h3>
	<ul>
		<li><a href="../server-api/module-easyrtc_default_event_listeners-eventListener.html">eventListener</a></li>
		<li><a href="../server-api/module-easyrtc_public_obj-pub.html">pub</a></li>
		<li><a href="../server-api/module-easyrtc_public_obj-pub.events.html">events</a></li>
		<li><a href="../server-api/module-easyrtc_public_obj-pub.util.html">util</a></li>
		<li><a href="../server-api/module-easyrtc_util-eu.html">eu</a></li>
		<li><a href="../server-api/module-general_util-g.html">g</a></li>
		<li><a href="../server-api/pub.appObj.html">appObj</a></li>
		<li><a href="../server-api/pub.appObj.connectionObj.html">connectionObj</a></li>
		<li><a href="../server-api/pub.appObj.connectionObj.connectionRoomObj.html">connectionRoomObj</a></li>
		<li><a href="../server-api/pub.appObj.roomObj.html">roomObj</a></li>
		<li><a href="../server-api/pub.appObj.sessionObj.html">sessionObj</a></li>
	</ul>
</nav>
<div class="easyrtc-docs-content">
<div id="main">
  <h1 class="page-title">Class: Easyrtc_ft</h1>
  




<section>

<header>
    
        <h2>Easyrtc_ft</h2>
        
            <div class="class-description">Easyrtc_ft.</div>
        
    
</header>

<article>
    <div class="container-overview">
    
        

    
    <h2>Constructor</h2>
    

    <h4 class="name" id="Easyrtc_ft"><span class="type-signature"></span>new Easyrtc_ft<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="Easyrtc_ft.html">Easyrtc_ft</a>}</span></h4>

    















<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="easyrtc_ft.js.html">easyrtc_ft.js</a>, <a href="easyrtc_ft.js.html#line60">line 60</a>
    </li></ul></dd>
    

    

    

    
</dl>













<h5>Returns:</h5>

        
<div class="param-desc">
    the new easyrtc instance.
</div>



<dl>
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type"><a href="Easyrtc_ft.html">Easyrtc_ft</a></span>


    </dd>
</dl>

    



    
    </div>

    

    

    

     

    

    
        <h3 class="subsection-title">Members</h3>

        
            
<h4 class="name" id=".errCodes"><span class="type-signature">(static) </span>errCodes<span class="type-signature"> :Object</span></h4>




<div class="description">
    Error codes that the EasyRTC will use in the errorCode field of error object passed
to error handler set by easyrtc.setOnError. The error codes are short printable strings.
</div>



    <h5>Type:</h5>
    <ul>
        <li>
            
<span class="param-type">Object</span>


        </li>
    </ul>





<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="easyrtc_ft.js.html">easyrtc_ft.js</a>, <a href="easyrtc_ft.js.html#line67">line 67</a>
    </li></ul></dd>
    

    

    

    
</dl>






        
            
<h4 class="name" id=".saveAs"><span class="type-signature">(static) </span>saveAs<span class="type-signature"></span></h4>




<div class="description">
    This is a wrapper around Eli Grey's saveAs function. This saves to the browser's downloads directory.
</div>







<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="easyrtc_ft.js.html">easyrtc_ft.js</a>, <a href="easyrtc_ft.js.html#line773">line 773</a>
    </li></ul></dd>
    

    

    

    
</dl>






        
    

    
        <h3 class="subsection-title">Methods</h3>

        
            

    

    <h4 class="name" id=".buildDragNDropRegion"><span class="type-signature">(static) </span>buildDragNDropRegion<span class="signature">(droptargetName, filesHandler)</span><span class="type-signature"></span></h4>

    



<div class="description">
    Establish an area as a drag-n-drop drop site for files.
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>droptargetName</code></td>
            

            <td class="type">
            
                
<span class="param-type">DOMString</span>


            
            </td>

            

            

            <td class="description last">the id of the drag-and-drop site or the actual DOM object.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>filesHandler</code></td>
            

            <td class="type">
            
                
<span class="param-type">function</span>


            
            </td>

            

            

            <td class="description last">function that accepts an array of File's.</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="easyrtc_ft.js.html">easyrtc_ft.js</a>, <a href="easyrtc_ft.js.html#line78">line 78</a>
    </li></ul></dd>
    

    

    

    
</dl>
















        
            

    

    <h4 class="name" id=".buildFileReceiver"><span class="type-signature">(static) </span>buildFileReceiver<span class="signature">(acceptRejectCB, blobAcceptor, statusCB)</span><span class="type-signature"></span></h4>

    



<div class="description">
    Enable datachannel based file receiving. The received blobs get passed to the statusCB in the 'eof' typed message.
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>acceptRejectCB</code></td>
            

            <td class="type">
            
                
<span class="param-type">function</span>


            
            </td>

            

            

            <td class="description last">this function is called when another peer
(otherGuy) offers to send you a list of files. this function should call it's wasAccepted function with true to
allow those files to be sent, or false to disallow them.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>blobAcceptor</code></td>
            

            <td class="type">
            
                
<span class="param-type">function</span>


            
            </td>

            

            

            <td class="description last">this function is called three arguments arguments: the suppliers easyrtcid, a blob and a filename. It is responsible for
saving the blob to the file, usually using easyrtc_ft.saveAs.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>statusCB</code></td>
            

            <td class="type">
            
                
<span class="param-type">type</span>


            
            </td>

            

            

            <td class="description last">this function is called with the current state of file receiving. It is passed two arguments:
otherGuy - the easyrtcid of the person sending the files. *
msg - one of the following structures:
{status:"done", reason:"accept_failed"}
{status:"done", reason:"success"}
{status:"done", reason:"cancelled"}
{status:"eof"},
{status:"started_file, name:"filename"}
{status:"progress", name:filename,
   received:received_size_in_bytes,
   size:file_size_in_bytes }</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="easyrtc_ft.js.html">easyrtc_ft.js</a>, <a href="easyrtc_ft.js.html#line567">line 567</a>
    </li></ul></dd>
    

    

    

    
</dl>















    <h5>Example</h5>
    
    <pre class="prettyprint"><code>easyrtc_ft(
      function(otherGuy, filenamelist, wasAccepted) {  wasAccepted(true);},
      function(otherGuy, blob, filename) { easyrtc_ft(blob, filename);},
      function(otherGuy, status) {  console.log("status:" + JSON.stringify(status))}
    );</code></pre>



        
            

    

    <h4 class="name" id=".buildFileSender"><span class="type-signature">(static) </span>buildFileSender<span class="signature">(destUser, progressListener, options)</span><span class="type-signature"> &rarr; {function}</span></h4>

    



<div class="description">
    Builds a function that can be used to send a group of files to a peer.
</div>









    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>destUser</code></td>
            

            <td class="type">
            
                
<span class="param-type">String</span>


            
            </td>

            

            

            <td class="description last">easyrtcid of the person being sent to.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>progressListener</code></td>
            

            <td class="type">
            
                
<span class="param-type">function</span>


            
            </td>

            

            

            <td class="description last">if provided, is called with the following objects:
   {status:"waiting"}  // once a file offer has been sent but not accepted or rejected yet
   {status:"started_file", name: filename}
   {status:"working", name:filename, position:position_in_file, size:size_of_current_file, numFiles:number_of_files_left}
   {status:"cancelled"}  // if the remote user cancels the sending
   {status:"done"}       // when the file is done
   the progressListener should always return true for normal operation, false to cancel a filetransfer.</td>
        </tr>

    

        <tr>
            
                <td class="name"><code>options</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            

            

            <td class="description last">overide default file transfer settings
   maxPacketSize is the size (before base64 encoding) that is sent in a
              single data channel message, in bytes.
   maxChunkSize is the amount read from a file at a time, in bytes.
   ackThreshold is the amount of data that can be sent before an ack is
             received from the party we're sending to, bytes.
   maxChunkSize should be a multiple of maxPacketSize.
   ackThreshold should be several times larger than maxChunkSize. For
             network paths that have greater latency, increase
             ackThreshold further.</td>
        </tr>

    
    </tbody>
</table>






<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    
    <dt class="tag-source">Source:</dt>
    <dd class="tag-source"><ul class="dummy"><li>
        <a href="easyrtc_ft.js.html">easyrtc_ft.js</a>, <a href="easyrtc_ft.js.html#line206">line 206</a>
    </li></ul></dd>
    

    

    

    
</dl>













<h5>Returns:</h5>

        
<div class="param-desc">
    an object that accepts an array of File (the Files to be sent), and a boolean
</div>



<dl>
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">function</span>


    </dd>
</dl>

    



        
    

    

    
</article>

</section>




</div>
<nav class="hide"><h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Easyrtc.html">Easyrtc</a></li><li><a href="Easyrtc_App.html">Easyrtc_App</a></li><li><a href="Easyrtc_ft.html">Easyrtc_ft</a></li><li><a href="Easyrtc_IframeCapture.html">Easyrtc_IframeCapture</a></li><li><a href="Easyrtc_No_IframeCapture.html">Easyrtc_No_IframeCapture</a></li><li><a href="Easyrtc_Rates.html">Easyrtc_Rates</a></li><li><a href="Easyrtc_Recorder.html">Easyrtc_Recorder</a></li></ul></nav>		
	</div>
</div>
<footer class="template">
	<div class="wrapper-content">
		<p>Copyright &copy;2016 EasyRTC</p>
	</div>
</footer>
<!-- <script>prettyPrint();</script> -->
<!-- <script src="scripts/linenumber.js"></script> -->
</body>
</html>